Typical graphics sub-systems use a dual buffer arrangement for graphics buffers in which the roles of foreground and background buffers are switched between a pair of buffers for each frame of graphics. When one frame is being displayed from one of the buffers, the next frame of graphic content can be written to the other buffer so that it is ready to be displayed when required. The switching between which buffer is being displayed from and which is being written to occurs in response to a synchronization signal for the display.
Multiple displays can be used to display the same content. Typically one of the displays is designated as a primary display whose synchronization signal is used to control switching between the display buffer and the rendering buffer. However, when using multiple displays to display the same content, the synchronization signal for one of the displays may not be in synch with the synchronization signal of the primary display. As a result, when the synchronization signal of the primary display occurs, the display and render buffers are switched, however one of the other displays may not have completed reading the content from the buffer before new content is written to it. When new content is rendered to a buffer that is being displayed by one of the displays artifacts will appear as the content that is in the process of being displayed is written over by new content.
In order to avoid artifacts when displaying the same content to multiple displays concurrently, the synchronization signals of the displays can be synchronized with each other so that no displays are reading from the display buffer when it is switched to the background buffer. Synchronizing signals of multiple displays may be difficult or impossible, for example if the display generates its own synchronization signals or if the multiple displays do not have a common refresh rate at which all of the displays operate.
Another attempt to avoiding artifacts when displaying the same content to multiple displays concurrently is to include separate display and render buffers for each of the displays. That is, each display can be associated with its own display and render buffers. The synchronization signal of each display can then be used to switch the buffers of the display. Since each of the displays has its own associated display and render buffers, a second display will not be displaying from a buffer as it is being rendered to. However, having separate buffers associated with each display requires providing the same content to the multiple buffers either by rendering the content to each of the rendering buffers or by copying the content rendered to one of the rendering buffers to one or more of the other rendering buffers. The additional rendering or copying of the content to the multiple render buffers can increase required CPU usage and memory bandwidth of a system and as such possibly decrease the overall performance of the system.
It is desirable to display content to multiple displays concurrently, while overcoming one or more current disadvantages.